use crate::types::TResult;
use std::fs;
use std::path::Path;

/// 保存字节数据到文件
pub fn save_bytes_to_file(file_path: &str, data: &[u8], auto_create_dir: bool) -> TResult<()> {
    let path = Path::new(file_path);
    
    // 如果需要自动创建目录
    if auto_create_dir {
        if let Some(parent) = path.parent() {
            fs::create_dir_all(parent)?;
        }
    }
    
    fs::write(path, data)?;
    Ok(())
}

/// 保存文本到文件
pub fn save_text_to_file(file_path: &str, text: &str, auto_create_dir: bool) -> TResult<()> {
    save_bytes_to_file(file_path, text.as_bytes(), auto_create_dir)
}

/// 检查文件是否存在
pub fn file_exists(file_path: &str) -> bool {
    Path::new(file_path).exists()
}

/// 获取文件扩展名
pub fn get_file_extension(file_path: &str) -> Option<String> {
    Path::new(file_path)
        .extension()
        .and_then(|ext| ext.to_str())
        .map(|ext| ext.to_lowercase())
}